59 research outputs found
Advances in Engineering Software for Multicore Systems
The vast amounts of data to be processed by today’s applications demand higher computational power. To meet application requirements and achieve reasonable application performance, it becomes increasingly profitable, or even necessary, to exploit any available hardware parallelism. For both new and legacy applications, successful parallelization is often subject to high cost and price. This chapter proposes a set of methods that employ an optimistic semi-automatic approach, which enables programmers to exploit parallelism on modern hardware architectures. It provides a set of methods, including an LLVM-based tool, to help programmers identify the most promising parallelization targets and understand the key types of parallelism. The approach reduces the manual effort needed for parallelization. A contribution of this work is an efficient profiling method to determine the control and data dependences for performing parallelism discovery or other types of code analysis. Another contribution is a method for detecting code sections where parallel design patterns might be applicable and suggesting relevant code transformations. Our approach efficiently reports detailed runtime data dependences. It accurately identifies opportunities for parallelism and the appropriate type of parallelism to use as task-based or loop-based
GraphBinMatch: Graph-based Similarity Learning for Cross-Language Binary and Source Code Matching
Matching binary to source code and vice versa has various applications in
different fields, such as computer security, software engineering, and reverse
engineering. Even though there exist methods that try to match source code with
binary code to accelerate the reverse engineering process, most of them are
designed to focus on one programming language. However, in real life, programs
are developed using different programming languages depending on their
requirements. Thus, cross-language binary-to-source code matching has recently
gained more attention. Nonetheless, the existing approaches still struggle to
have precise predictions due to the inherent difficulties when the problem of
matching binary code and source code needs to be addressed across programming
languages. In this paper, we address the problem of cross-language binary
source code matching. We propose GraphBinMatch, an approach based on a graph
neural network that learns the similarity between binary and source codes. We
evaluate GraphBinMatch on several tasks, such as cross-language
binary-to-source code matching and cross-language source-to-source matching. We
also evaluate our approach performance on single-language binary-to-source code
matching. Experimental results show that GraphBinMatch outperforms
state-of-the-art significantly, with improvements as high as 15% over the F1
score
Adaptive Dynamic Pruning for Non-IID Federated Learning
Federated Learning~(FL) has emerged as a new paradigm of training machine
learning models without sacrificing data security and privacy. Learning models
at edge devices such as cell phones is one of the most common use case of FL.
However, the limited computing power and energy constraints of edge devices
hinder the adoption of FL for both model training and deployment, especially
for the resource-hungry Deep Neural Networks~(DNNs). To this end, many model
compression methods have been proposed and network pruning is among the most
well-known. However, a pruning policy for a given model is highly
dataset-dependent, which is not suitable for non-Independent and Identically
Distributed~(Non-IID) FL edge devices. In this paper, we present an adaptive
pruning scheme for edge devices in an FL system, which applies dataset-aware
dynamic pruning for inference acceleration on Non-IID datasets. Our evaluation
shows that the proposed method accelerates inference by ~( FLOPs
reduction) while maintaining the model's quality on edge devices
- …